package main

import ( "fmt" )

type Pessoa struct {
    Nome string // campo público
    apelido string // campo privado
}

type Segundo int

type Descritor interface {
    AsString() string
}

func (p *Pessoa) AsString() string {
    return fmt.Sprintf("%v aka %v", p.Nome, p.apelido)
}

func (s *Segundo) AsString() string {
    return fmt.Sprintf("%v seg", int(*s))
}

func printer(d Descritor) {
    fmt.Printf("descrevendo: %s\n", d.AsString())
}

func main() {
    seg := Segundo(10)
    pessoa := &Pessoa{Nome:"Andre Moraes", apelido:"andre"}
    printer(&seg)
    printer(pessoa)
}
